package com.moli.iov.down.command.codec.decode.decoders;

import com.moli.iov.util.ByteArrayUtil;
import com.moli.iov.util.DateUtil;
import org.apache.commons.lang.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.ParseException;
import java.util.Date;

/**
 * <p>
 *
 * </p>
 *
 * @author: zql
 * @Date: 2018/11/30 17:56
 */
public abstract class BaseDecoder {
    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    public Date dateDecode(byte[] data){
        try {
            byte[] year = ArrayUtils.subarray(data, 0, 1);
            data = ArrayUtils.subarray(data, 1, data.length);

            byte[] month = ArrayUtils.subarray(data,0, 1);
            data = ArrayUtils.subarray(data, 1, data.length);

            byte[] day = ArrayUtils.subarray(data, 0, 1);
            data = ArrayUtils.subarray(data, 1, data.length);

            byte[] hour = ArrayUtils.subarray(data, 0, 1);
            data = ArrayUtils.subarray(data, 1, data.length);

            byte[] minute = ArrayUtils.subarray(data, 0, 1);
            data = ArrayUtils.subarray(data, 1, data.length);

            byte[] second = ArrayUtils.subarray(data, 0, 1);


            String dateStr = "20" + ByteArrayUtil.toInt(year)+"/"+ByteArrayUtil.toInt(month)+"/"+ByteArrayUtil.toInt(day)+" "+
                    ByteArrayUtil.toInt(hour)+":"+ByteArrayUtil.toInt(minute)+":"+ByteArrayUtil.toInt(second);
            
            return DateUtil.parser("yyyy/MM/dd HH:mm:ss", dateStr);
        } catch (ParseException e) {
            logger.error("日期转换异常", e);
            return null;
        }
    }

    public Integer serialNumberDecode(byte[] data){
        byte[] serialNumber = ArrayUtils.subarray(data,0 ,2);
        return ByteArrayUtil.toInt(serialNumber);
    }
}
